Интерфейс командной строки
Некоторые расширения могут использовать утилиты командной строки, которые Plesk предоставляет администраторам, как альтернативу выполнения операций в графическом интерфейсе. Интерфейс командной строки (Command-Line Interface, CLI) предоставляет те же функции, что и XML API, но результат выполнения той или иной операции выдается в виде простого текста, а не дерева XML. Более подробную информацию об утилитах командной строки смотрите в следующих документах:
- Справочник по командной строке, Plesk для Linux
- Справочник по командной строке, Plesk для Microsoft Windows
Для выполнения вызова CLI используйте класс pm_ApiCli.
Выполнение утилит
Вызов командной строки выполняется с помощью метода:
Его первый аргумент – имя утилиты, а второй – массив опций и их значений. Третий необязательный аргумент указывает, какого рода информацию о результатах выполнения утилиты надо получить.
Примечание: В версиях Plesk 12.5 и ниже вызов pm_ApiCli::call
может быть запущен только через скрипты командной строки и не может быть запущен через операции в интерфейсе Plesk.
Например: Получение информации о лицензионном ключе
Следующий пример позволяет получить информацию о текущем лицензионном ключе Plesk:
$result = pm_ApiCli::call('keyinfo', ['-l']);
var_dump($result);
Вывод должен выглядеть примерно так:
array(3) {
["code"] =>
int(0)
["stdout"] =>
string(447) "plesk_key_id: 0
license_update_date: 20350101
lim_date: 20120501
lim_cl: -1
...
"
["stderr"] =>
string(0) ""
}
В более сложных ситуациях разделите вызов по аргументам и добавьте каждый аргумент как элемент массива. Например:
customer --create johnusername -name "John Doe" -passwd sample -country US -notify false
должен быть преобразован к:
pm_ApiCli::call('customer', ['--create', 'johnusername', '-name', 'John Doe', '-passwd', 'sample', '-country', 'US', '-notify', 'false']);
Например: Обработка результатов выполнения утилиты
Можно указать, какая именно информация о выполнении утилиты должна быть получена с помощью вызова. Для этого укажите тип возвращенного значения в последнем аргументе метода call()
, например:
$result = pm_ApiCli::call('license', ['--check-installed-license'], pm_ApiCli::RESULT_CODE);
В этом примере переменной $result
будет присвоен код ошибки, созданный в результате выполнения утилиты „license“ с параметром „--check-installed-license
“, который равен ‘0’, если установленный код лицензии является корректным, и ‘1’ – в противном случае.
Все доступные типы возвращаемых значений описаны здесь: pm_ApiCli Constants.
Примечание: Если не указано ни одного возвращаемого значения, будет возвращено значение по умолчанию RESULT_EXCEPTION
. До Plesk 17 по умолчанию возвращалось значение RESULT_FULL
. Возможно, потребуется отразить это изменение в расширениях, одновременно поддерживающих как версии Plesk 12.5 и выше, так и версии Plesk 17 и выше.
Если в результате выполнения утилиты возвращается код ошибки ‘0’, при использовании RESULT_EXCEPTION
будет возвращен тот же массив значений, что и при использовании RESULT_FULL
(code, stdout, stderr). Но если результирующий код ошибки не равен ‘0’, использование RESULT_EXCEPTION
приводит к выдаче исключения (pm_Exception_ResultException).
Выполнение привилегированных утилит
Папка /<product-root>/admin/bin/
содержит утилиты, которые запускаются с более высоким уровнем привилегий. Кроме того, в самом расширении могут быть использованы некоторые утилиты, которые должны запускаться с более высоким уровнем привилегий. Такие утилиты помещаются в папку /<product-root>/admin/bin/modules/$MODULE_NAME
.
Примечание: В версиях Plesk 12.5 и выше привилегированные утилиты доступны только в Plesk для Linux.
Вы можете запускать такие утилиты с помощью следующего метода:
Например:
$result = pm_ApiCli::callSbin('my-utility');
var_dump($result);
По умолчанию метод будет искать утилиту my-utility
в папке /<product-root>/admin/bin/modules/$MODULE_NAME
. Если утилита там не найдена, метод будет искать ее в папке /usr/local/psa/admin/bin/
.
Примечание: Так же как и call()
, callSbin()
может иметь необязательный третий аргумент, который определяет, какого рода информацию о результатах выполнения утилиты надо получить.